永続コミットによって、システムまたはアプリケーションの障害が原因で、コミットされたトランザクションが失われないことが保証されます。アプリケーションでは、非永続コミットを実行することによって、一部またはすべてのディスク書込みを回避できます。非永続コミットを行うには、DurableCommitsを0に設定し、ttDurableCommitプロシージャをコールして特定のトランザクションに対して永続コミットを強制します。特定のトランザクションに対してttDurableCommitがコールされると、その前に実行されたすべてのトランザクションもコミットされます。
非永続コミットでは、トランザクション・ログをディスクに書き込むことを除いて、永続コミットで行うすべてのことを行います。ロックは解放され、カーソルはクローズされますが、ディスク書込みは実行されません。
注意: | 一部のコントローラまたはドライバは、コントローラのキャッシュ・メモリーにデータを書き込むのみか、または書込みが終了したことがオペレーティング・システムに通知された後でのみディスクにデータを書き込みます。この場合、停電が発生すると、永続コミットしたと思われていた一部の情報が失われる可能性があります。このようなデータの損失を回避するには、終了通知の前に記録メディアに書き込むようディスクを構成するか、または無停電電源装置(UPS)を使用します。 |
非永続コミットのメリットは、レスポンス時間を減らし、スループットを向上させることができることです。デメリットは、システムで障害が発生した場合に、一部のトランザクションが失われる可能性があることです。アプリケーションでは、定期的に永続コミットまたはチェックポイントを実行してディスクへのロギングを強制実行することによって、失われる可能性があるデータの量を減らすことができます。また、TimesTen自体でも、内部バッファが満杯になった場合にログをディスクに定期的にフラッシュしているため、失われるデータの量が制限されます。
トランザクションは、接続ごとに永続的にするか、または永続性遅延モードを設定できます。アプリケーションで、ttDurableCommitプロシージャをコールして、特定のトランザクションの永続コミットを強制実行できます。
非永続コミットを使用しないアプリケーションでは、書込みおよびフラッシュのかわりに同期書込みを使用することをお薦めします。同期化書込みを有効にするには、LogFlushMethod=2を設定します。
SYS.MONITOR表のXACT_D_COMMITS列は、永続コミットを実行したトランザクションの数を示します。